package com.ray.mapper;

import com.ray.bean.*;
import com.ray.exception.ServiceException;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface OtherWarehouseMapper {
	
	/**
	 * @author natelu
	 * 通过集合插入其他仓库数据
	 * @param otherWarehouseBeanList
	 */
	void insertOtherWarehouseByList(@Param("otherWarehouseBeanList")List<OtherWarehouseBean> otherWarehouseBeanList);

	 
	/**
	 * @author natelu
	 * 通过报工删除其他仓库记录
	 * @param otherIdList
	 */
	void deleteOtherWarehouseByIdList(@Param("idList")List<String> idList);


	/**
	 * 修改记录
	 * @author natelu
	 * @param otherWarehouseBean
	 */
	void updateOtherWarehouseByBean(@Param("otherWarehouseBean")OtherWarehouseBean otherWarehouseBean);

	/**
	 * 审核OtherWarehouse
	* @date 2018年5月30日 下午4:05:13 
	* @author 李斌
	* @return void 
	* @throws
	 */
	void updateOtherWarehouseStatusById(Map<String, Object> map);

	/**
	 * 删除otherWarehouse(逻辑删除)
	* @date 2018年6月15日 上午11:42:24 
	* @author 李斌
	* @return void 
	* @throws
	 */
	void deleteOtherWarehouseById(Map<String, Object> map);
	
	/**
	 * 获取otherWarehouse出入库信息
	* @date 2018年6月15日 上午11:41:39 
	* @author 李斌
	* @return OtherWarehouseBean 
	* @throws
	 */
	OtherWarehouseBean getOtherWarehouseById(Map<String, Object> map);

	/**
	 * 更新otherWarehouse状态
	* @date 2018年6月15日 上午11:41:55 
	* @author 李斌
	* @return int 
	* @throws
	 */
	int updateOtherWarehouseByBeanOnStatus(@Param("otherWarehouseBean")OtherWarehouseBean otherWarehouseBean);

	/**
	 * 获取其他仓位的物料信息,用于出库
	* @date 2018年6月19日 下午5:22:23 
	* @author 李斌
	* @return List<FeedOrderDetailBean> 
	* @throws
	 */ 
	List<FeedOrderDetailBean> getOtherWarehouseByWarehouseOut(Map map);

	/**
	 * 获取其他仓位的物料信息数据条数,用于出库
	* @date 2018年6月20日 上午8:29:57 
	* @author 李斌
	* @return int 
	* @throws
	 */
	int getOtherWarehouseCount(Map map);
	
	
	/**
	 * 获取成品订单信息
	 * @param orderId(订单编号)
	 * @return
	 * @author nate
	 * @throws ServiceException
	 */
	List<FinishStockBean> getFinishStockBean(Map map);

	/**
	 * 获取相似库存单的库存数
	 * @param map
	 * @return
	 */
	List<FinishStockBean> getSimilarFinishStockData(Map map);

	/**
	 * 查询订单单行的订单数
	 * @param orderId(订单编号)
	 * @param rowIndexs(行号)
	 * @return
	 */
    long  getOrderRowCount(Map map);

    /**
	 * 查询订单单行的库存数
	 * @param otherOrderId(订单编号)
	 * @param rowIndexs(行号)
	 * @return
	 */
	long getOrderStockRowCount(Map map);

	/**
	 * @param orderId(订单编号)
	 * @param rowIndexs(订单编号)
	 * @param map
	 * @return
	 */
	long orderRowAleradyOutCount(Map map);

	/**
	 * 插入成品仓出库数据
	 * @param map
	 */
	void insertOtherWarehouseByFinish(Map map);

	/**
	 * 通过其他订单出库
	 * @param map
	 */
	void FinishOtherStockOut(Map map);


	/**
	 * 获取生产订单主表里的订单总数
	 * @param orderId(订单编号)
	 * @param map
	 * @return
	 */
	long getOrderCount(Map map);

	/**
	 * 设置订单生产完成
	 * @param orderId(订单编号)
	 * @param map
	 */
	void setOrderFinish(Map map);
  

	double getOtherWarehouseByPurchaseId(Map<String, Object> purchaseMap);


	List<FeedOrderDetailBean> getOherWarehouseByWarehouseMaterial(Map map);


	
	
	
	
	
	
	/**
	 * 出库到客户
	 * @author natelu
	 */
	/**
	 * 查询原料仓的数据,全部数据，不分页
	 * @param map
	 * @return
	
	Set<SearchWhereBean> rawMaterialSet(Map map);
    */

    /**
     * 获取 原材料仓查询出库到客户的数据
     * @param map
     * @return
     */
	int getAllOutMaterialDataCount(Map map);
	List<SearchWhereBean> getAllOutMaterialData(Map map);


	/**
	 * 根据物料代码查找物料信息
	 * @param materialCode
	 * @return
	 */
	CompanyMaterialTableBean getMaterialByMaterialCode(@Param("materialCode")String materialCode);


	/**
	 * 通过客户名称获取客户信息
	 * @param customerName
	 * @param loginCompany 
	 * @return
	 */
	CustomerBean getCustomerBeanByCustomerName(@Param("customerName")String customerName,@Param("loginCompany") String loginCompany);


	/**
	 * 获取本公司所有物料搜索条件
	 * @param map
	 * @return
	 */
	List<SearchWhereBean> getAllMaterialSearchWhere(Map map);
	/**
	 * 获取本公司所有订单搜索条件
	 * @param map
	 * @return
	 */
	List<SearchWhereBean> getAllOrderSearchWhere(Map map);

	 /**
     * 获取其他仓库查询的出库到客户的数据
     * @param map
     * @return
     */
	List<SearchWhereBean> getAllOutOtherMaterialData(Map map);
	int getAllOutOtherMaterialDataCount(Map map);


     /**
      * 查询物料的采购数，订单不想关库存数，投料数
      * @param materialCode(物料代码)
      * @param loginCompany(公司)
      * @return
      */
	Map<String, Double> getCountResult(@Param("materialCode")String materialCode,@Param("loginCompany") String loginCompany);


	/**
	 * 出库到客户
	 * @param otherList
	 */
	void materialOutToCustomer(Map map);


	/**
	 * @param orderId(订单编号)
	 * @param rowIndexs(行号)
	 * @param request
	 * @return
	 */
	List<FinishStockBean> getOrderFinishOutDetail(Map map);
	
	/**
	 * 通过采购单对应表id获取其他仓位入库明细
	* @date 2018年8月9日 上午9:43:49 
	* @author 李斌
	* @return List<OtherWarehouseBean> 
	* @throws
	 */
	List<OtherWarehouseBean> getOtherWarehouseDetailByPurchaseOrderDetailId(Map<String, Object> purchaseMap);

	/**
	 *  获取成品仓的订单编号
	* @date 2018年8月17日 下午1:25:14 
	* @author 李斌
	* @return List<String> 
	* @throws 
	 */
	List<String> getOrderIdListByOtherWarehouse(Map<String, Object> map);


	int getFinishStockCountCount(Map map);

	
}
